package com.hugehard.ImageFilter;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;

public class ImageUtil {
	private static int calculateInSampleSize(BitmapFactory.Options options,
			int reqWidth, int reqHeight) {
		// Raw height and width of image
		final int height = options.outHeight;
		final int width = options.outWidth;
		int inSampleSize = 1;

		if (height > reqHeight || width > reqWidth) {
			if (width > height) {
				inSampleSize = Math.round((float) height / (float) reqHeight);
			} else {
				inSampleSize = Math.round((float) width / (float) reqWidth);
			}
		}
		return inSampleSize;
	}

	public static Bitmap decodeSampledBitmapFromResource(
			String selectedImagePath, int reqWidth, int reqHeight,
			boolean bHighQuality) {

		// First decode with inJustDecodeBounds=true to check dimensions
		final BitmapFactory.Options options = new BitmapFactory.Options();
		options.inJustDecodeBounds = true;

		BitmapFactory.decodeFile(selectedImagePath, options);
		// BitmapFactory.decodeResource(res, resId, options);

		// Calculate inSampleSize
		if (bHighQuality == true) {
			int originHeight = options.outHeight;
			int originWidth = options.outWidth;
			if (originHeight / 2 >= reqHeight && originWidth / 2 >= reqWidth) {
				reqHeight = (int) originHeight / 2;
				reqWidth = (int) originWidth / 2;
			}
		}
		options.inSampleSize = calculateInSampleSize(options, reqWidth,
				reqHeight);

		// Decode bitmap with inSampleSize set
		options.inJustDecodeBounds = false;
		// return BitmapFactory.decodeResource(res, resId, options);

		return BitmapFactory.decodeFile(selectedImagePath, options);
	}

}
